
100  PRINT " 'PDF FIT FILE 7/6/86' CSC"
120  REM  REMS AND FITS ADDED 1/2/85 CSC
140 D$ =  CHR$ (4)
150 DS = 1: REM    DATA LOW INDEX NO. DEFAULT.
155 ND = 20: REM  DEFAULT
160  DIM XE(70),WE(70),CE(70),L(70),WR(50),CR(50),LR(64),O(15)
161 PI = 4 *  ATN (1)
162 I(0) = 3.51562:I(1) = 3.089942:I(2) = 1.206749:I(3) = .265973:I(4) = .0360768:I(5) = .0045813
163 BX = 3.75
164 J(0) = .01328592:J(1) = .00225319:J(2) =  - .00157565:J(3) = .00916281:J(4) =  - .02057706
165 J(5) = .02635537:J(6) =  - .01647633:J(7) = .00392377:J(8) = .39894228
170  FOR M = 0 TO 12
172 O(M) = M
174  NEXT M
200  GOTO 5060: REM  MENU
220  REM  CALC MOD BESSEL FUNCTION I0(X).USE ABRM AND STEGUN POLYNOM. APPROX.
230  REM  ENTER ALL NUMBERS AS I(J),J(J) AND O(J) FOR SPEED.
240  IF X > BX THEN 460
260  REM  X<=3.75
280 T = X / BX
300 T2 = I(0) * T ^ O(2)
320 T3 = I(1) * T ^ O(4)
340 T4 = I(2) * T ^ O(6)
360 T5 = I(3) * T ^ O(8)
380 T6 = I(4) * T ^ O(10)
400 T7 = I(5) * T ^ O(12)
420 I0 = O(1) + T2 + T3 + T4 + T5 + T6 + T7
440  RETURN 
460  REM  X>3.75
480 T = X / BX
500 T1 = J(0) * T ^  - O(1)
520 T2 = J(1) * T ^  - O(2)
540 T3 = J(2) * T ^  - O(3)
560 T4 = J(3) * T ^  - O(4)
580 T5 = J(4) * T ^  - O(5)
600 T6 = J(5) * T ^  - O(6)
620 T7 = J(6) * T ^  - O(7)
640 T8 = J(7) * T ^  - O(8)
660 I1 = J(8) + T1 + T2 + T3 + T4 + T5 + T6 + T7 + T8
680  RETURN 
1140  REM 
1150  REM  COMPUTE FISH DENSITY FD
1160  REM  COMPUTE CUMULATIVE CE(M)
1165  REM  SUM IS TOTAL FISH DENSITY,FISH/M^3. HERE FD
1170  PRINT "CHOOSE DATA LOW 'DL' AND"
1171  PRINT "       DATA MAX 'DM'"
1180 CE(0) = 0
1200 C = 0
1205  PRINT "OLD DL=";DS;"  NEW DL=";: INPUT DS: REM  D SMALL
1210  PRINT "OLD DM=;"DM;"  NEW DM=";: INPUT DM
1220  REM   INSERT  SIGN FOR L(M) DECREASING AS M INCREASES
1240  FOR M = DS TO DM
1260 C = WE(M) * (L(M - 1) - L(M)) + C
1280 CE(M) = C
1300  NEXT M
1310 FD = C: REM  FISH DENSITY
1320  PRINT 
1325  PRINT "TOTAL FISH DENSITY=";FD;" FISH/M^3"
1330  PRINT 
1340  REM   NORMALIZE CE(M) AND WE(M)
1360  FOR M = DS TO DM
1380 WE(M) = XE(M) / C
1400  IF YN < WE(M) THEN YN = WE(M)
1420 CE(M) = CE(M) / C
1440  NEXT M
1460  REM 
1480  GOTO 5300
1500  REM 
1520  REM  ITERATE SUB
1540  PRINT 
1560  PRINT "RICE.PDF  ENTER PARAMETERS"
1580  FOR M = 0 TO RM
1600 WR(M) = 0
1620  NEXT M
1640 YM = YN:RM = DM: REM   RESETS
1660  PRINT "ENTER NUMBER OF TYPES OF FISH"
1680  PRINT "TYPES=";: INPUT NF
1700 NT = NF - 1
1720  FOR N = 0 TO NT
1740  PRINT "N=";N + 1
1760  PRINT "GAMMA=";: INPUT G(N)
1780  PRINT "LENGHT=";: INPUT LE(N):S(N) = LE(N) ^ 2
1800  PRINT "INPUT FRACTION FISH(";N + 1;")=";: INPUT FW(N)
1820  PRINT " E    W(E)  GA=";G(N);" SB=";S(N)
1860  NEXT N
1880  REM  COMPUTE FISH LENGTH:LOVE,J ACOUST SOC. AM.,62,1397-1403(1977)
1900 WL = SS / SF
1920 AI = 5.6E - 2
1940 BI = 1.88: REM  AI,BI EMPERICAL CONST FROM LOVE
1960 B = 2 / BI
1980 KD = (4 * PI / AI) ^ (1 / BI)
2000 KE = KD * WL ^ (1 - B) * CF ^ B
2020  FOR N = 0 TO NT
2040 FL = KE * LE(N) ^ B
2060 FL(N) =  INT (1000 * FL + .5) / 1000
2080  PRINT "#";N + 1;" FISH LENGHT=";FL(N);" M,LOVE FORMULA"
2100  NEXT N
2120  FOR N = 0 TO NT
2140 GA = G(N):SB = S(N):FW = FW(N)
2160  FOR M = DS TO DM
2180 E = LR(M)
2200 XE = ((1 + GA) * E ^ 2 + GA * SB) / SB
2220 X = 2 * E *  SQR (GA * (1 + GA)) /  SQR (SB)
2240 XC = 2 * E * (1 + GA) / SB
2260  GOSUB 240
2280  IF X <  = 3.75 THEN WR(M) = FW * XC *  EXP ( - XE) * I0 + WR(M)
2300  IF X > 3.75 THEN WR(M) = FW * XC *  EXP (X - XE) * I1 /  SQR (X) + WR(M)
2320  IF YM < WR(M) THEN YM = WR(M)
2340  NEXT M
2360  NEXT N
2380  REM  COMPUTE CUMULATIVE
2400 C = 0
2420 KT = 0
2440  REM   SIGN FOR ORDER OF L(M), LARGE TO SMALL
2460  FOR M = DS + 1 TO DM
2480 C = C + WR(M) * (L(M - 1) - L(M))
2500 CR(M) = C
2520 CD =  ABS (C - CE(M))
2540  IF KT < CD THEN KT = CD
2560  NEXT M
2580  REM  COMPUTE SQUARED ERROR
2600 E = 0
2610 ES = 0
2620  FOR M = DS TO DM
2640 E = E + (WE(M) - WR(M)) ^ 2
2650 ES = ES + WE(M) ^ 2
2660  NEXT M
2670 E =  SQR (E / (ES * DM))
2680 E0 =  INT (10000 * E + .5) / 100
2700 KT =  INT (1000 * KT + .5) / 1000
2720  PRINT "ERROR %=";E0;" T=";KT
2740  REM  END ITERATE SUB
2760  GOTO 5300
2780  REM 
2800  REM  PLOT GRAPHS
2820  PRINT "Y MAX=";YM;" INPUT YMAX": PRINT " FOR GRAPH=";: INPUT YG
2840  PRINT "INPUT DELTA Y=";: INPUT DY
2860  PRINT "L MAX=";L(0);" INPUT LM=";: INPUT LM
2880  PRINT "INPUT DELTA L=";: INPUT DL
2960  HCOLOR= 3
2980  HGR2 
2984 O0 = 0
2985 O1 = 1
2990 Y4 = 140:Y8 = 158:Y2 = 2:X2 = 2:X7 = 277:X8 = 278
2995 X37 = 137
3000 XS = X7 / LM
3020 YS = Y4 / YG
3040  IF RM <  = DM THEN RM = DM
3060  FOR M = DS + 1 TO RM
3080 Y = Y4 - YS * WR(M - O1)
3100 Y1 = Y4 - YS * WR(M)
3120 X = XS * LR(M - O1) + X2
3140 X1 = XS * LR(M) + X2
3160  IF X >  = O1 AND X <  = X7 AND Y >  = O1 AND Y <  = Y8 THEN  HPLOT X,Y TO X1,Y1
3180  NEXT M
3200  REM  PLOT DATA
3220  FOR M = DS TO DM
3240 X = XS * L(M) + X2
3260 Y = Y4 - YS * WE(M)
3280  IF X >  = X2 AND Y >  = Y2 AND Y <  = Y8 AND X <  = X7 THEN  HPLOT X - X2,Y TO X + X2,Y
3300  IF X >  = X2 AND X <  = X7 AND Y >  = Y2 AND Y <  = Y8 THEN  HPLOT X,Y - Y2 TO X,Y + Y2
3320  HPLOT X2,Y4 TO X8,Y4
3340  NEXT M
3360  HPLOT X2,Y8 TO X2,O1
3380  FOR M = 1 TO  INT (LM / DL)
3400 X = XS * DL * M + 2
3420  IF X < X8 THEN  HPLOT X,Y4 TO X,X37
3440  NEXT M
3460  FOR M =  - 1 TO  INT (YG / DY + .5)
3480 Y = 140 - M * YS * DY
3500  IF Y < Y8 AND Y >  = O0 THEN  HPLOT X2,Y TO O(5),Y
3520  NEXT M
3540  GET Q$
3560  TEXT 
3570  PRINT "HARD COPY 'Y' OR 'N' ";: INPUT P$
3572  IF P$ <  > "Y" THEN 3640
3573  PRINT "INPUT 'G' OR 'GD'";: INPUT G$
3574  PRINT D$;"PR#1"
3575  REM 
3580  IF P$ = "Y" THEN  PRINT D$;"PR#1"
3600  IF P$ = "Y" THEN  PRINT  CHR$ (27);">"; CHR$ (9);G$;"2"
3620  PRINT  CHR$ (27); CHR$ (33): REM   TURN ON BOLD FACE
3640  PRINT  TAB( 10);N$
3645  IF P$ = "Y" THEN  PRINT  CHR$ (27); CHR$ (34): REM      TURN OFF BOLD FACE
3647  PRINT  TAB( 10);"DELTA L=";DL;" DELTA Y=";DY
3650  PRINT 
3655  FOR I = 0 TO IT - 1
3660  PRINT  TAB( 10);A$(I)
3665  NEXT I
3675  PRINT  TAB( 10);"NO OF PINGS=";MP
3676  PRINT  TAB( 10);"CALIB FACTOR=;"CF
3677  PRINT 
3680  FOR N = 0 TO NT
3700  PRINT  TAB( 8);"TYPE(";;N + 1;") F%=";FW(N) * 100
3720  PRINT  TAB( 10);"GAMMA=";G(N);" LENGHT=";LE(N);" AU ;";FL(N);" M"
3725  PRINT  TAB( 10);"TARGET STRENGTH="; INT (200 *  LOG (CF * LE(N)) /  LOG (10) + .5) / 10;" DB"
3730  PRINT  TAB( 10);"FISH DENSITY=";FD * FW(N);" FISH/M^3"
3740  NEXT N
3790  PRINT  TAB( 12);"ERROR %=";E0;"  T=";KT
3795  PRINT 
3820  PRINT  CHR$ (27);"<"
3840  PRINT D$;"PR#0"
3860  TEXT 
3880  PRINT :P$ = "N"
3900  GOTO 5300
3920  REM 
3940  REM  CALC RICE PDF AT CLOSELY SPACED POINTS
3960  PRINT 
3980  PRINT "CALC' FULL RICE CURVE"
4000  PRINT "NO DATA STEPS=";DM;"  INPUT NO=";: INPUT RM
4020  PRINT "L(M)MAX = ";L(0);" INPUT LMAX = ";: INPUT LM
4040 DL = LM / RM
4060  FOR M = 0 TO RM
4080 WR(M) = 0
4100  NEXT M
4120  REM  COMPUTE RICE USING I0 SUB
4140  FOR N = 0 TO NT
4160 GA = G(N):SB = S(N):FW = FW(N)
4180  FOR M = 0 TO RM
4200 E = DL * (RM - M)
4220 LR(M) = E
4240 XE = ((1 + GA) * E ^ 2 + GA * SB) / SB
4260 X = 2 * E *  SQR (GA * (1 + GA)) /  SQR (SB)
4280 XC = 2 * E * (1 + GA) / SB
4300  GOSUB 240
4320  IF X <  = BX THEN WR(M) = FW * XC *  EXP ( - XE) * I0 + WR(M)
4340  IF X > BX THEN WR(M) = FW * XC *  EXP (X - XE) * I1 /  SQR (X) + WR(M)
4360  IF YM < WR(M) THEN YM = WR(M)
4380  NEXT M
4400  NEXT N
4420  REM  END CFR
4440  GOTO 5300: REM  MENU
4460  REM  PRINT TABLE OF INPUT NORMALIZED INPUT DATA
4480  IF P$ = "Y" THEN  PRINT D$;"PR#1"
4500  PRINT T$
4520  PRINT 
4540  PRINT "M"; TAB( 5);"L(M)"; TAB( 21);"NORM. WE(M)"
4560  FOR M = 0 TO DM
4580  PRINT M; TAB( 5);L(M); TAB( 21);WE(M)
4600  NEXT M
4620  PRINT :P$ = "N": REM  RESET HARD COPY
4640  PRINT D$;"PR#0"
4660  GOTO 5300: REM  MENU
4680  REM  
4700  REM  OUTPUT TABLE
4720  IF P$ = "Y" THEN  PRINT D$;"PR#1"
4740  PRINT 
4760  PRINT T$
4780  FOR N = 0 TO NT
4800  PRINT "FISH #";N + 1;" GAMMA=";G(N);"  LENGHT(LOVE)=";FL(N)
4820  PRINT  TAB( 6);"SIGMA BS=";S(N);"  LE = ";LE(N)
4830  PRINT  TAB( 6);"FISH DENSITY=";FD * FW(N);" /M^3"
4840  NEXT N
4850  PRINT  TAB( 6);"ERROR=";E0;" %";"  T=";KT
4860  PRINT 
4880  PRINT "  LR(M)     WR(M)"
4900  PRINT 
4920  FOR M = 0 TO RM
4940  PRINT LR(M),WR(M)
4960  NEXT M
4980  PRINT :P$ = "N"
5000  PRINT D$;"PR#0"
5020  GOTO 5300
5040  REM 
5060 P$ = "N": REM  RESET PRINT INSTRUCTION
5080  REM ... MENU....
5100  PRINT "MENU"
5105  PRINT ; TAB( 5);"RF"; TAB( 10);"READ FILE"
5110  PRINT ; TAB( 5);"C"; TAB( 10);"COMPUTE WF(E) & FISH DENSITY"
5115  PRINT ; TAB( 5);"CCF"; TAB( 10);"CHOOSE CALIB FACTOR"
5120  PRINT ; TAB( 5);"HC"; TAB( 10);"PRINT HARD COPY"
5125  PRINT ; TAB( 5);"PSP"; TAB( 10);"PRINT SONAR PARAMETERS"
5140  PRINT ; TAB( 5);"PD"; TAB( 10);"PRINT DATA"
5160  PRINT ; TAB( 5);"I"; TAB( 10);"ITERATE"
5180  PRINT ; TAB( 5);"G"; TAB( 10);"GRAPH"
5200  PRINT ; TAB( 5);"CFR"; TAB( 10);"CALC FULL RICE CURVE"
5220  PRINT ; TAB( 5);"OT"; TAB( 10);"PRINT OUTPUT TABLE"
5240  PRINT ; TAB( 5);"R"; TAB( 10);"RESET FOR 'I' AFTER 'CFR'"
5260  PRINT ; TAB( 5);"M"; TAB( 10);"MENU"
5280  PRINT ; TAB( 5);"Q"; TAB( 10);"QUIT"
5300  REM  RETURNS FROM SUBS
5320  PRINT : PRINT  TAB( 8);"MENU "
5340  INPUT M$
5345  IF M$ = "RF" THEN 6000
5350  IF M$ = "C" THEN 1160
5355  IF M$ = "CCF" THEN 5581
5360  IF M$ = "HC" THEN P$ = "Y": GOTO 5300
5380  IF M$ = "PSP" THEN 9000
5400  IF M$ = "PD" THEN 4460
5420  IF M$ = "I" THEN 1520
5440  IF M$ = "R" THEN 8000: REM  RESET RM,DM,LR(J)
5460  IF M$ = "G" THEN 2800
5480  IF M$ = "CFR" THEN 3920
5500  IF M$ = "OT" THEN 4680
5520  IF M$ = "Q" THEN  END 
5540  IF M$ = "M" THEN 5060
5560  PRINT "ERROR": GOTO 5300
5580  REM 
5581  PRINT "ENTER NEW CALB' FACTOR=";: INPUT CF
5585  GOTO 5300
6000  REM 
6010  REM  --- READ OLD FISH ECHO FILE
6040  REM  ENTER DATA
6050  REM    READ THE FILE ON DISK 1 OR 2
6060  PRINT " READ FILE NAMED": INPUT N$
6070  PRINT "   ON FLOPPY '1' OR '2' ";: INPUT F$
6090  PRINT D$;"OPEN";N$;",D";F$
6100  PRINT D$;"READ";N$
6110  INPUT SF: REM      SONAR FREQ
6120  INPUT SS: REM   SOUND SPEED
6130  INPUT RT: REM   RAD TRNSDUCER
6140  INPUT R1: REM   RANGES R1 ,R2
6150  INPUT R2
6160  INPUT MP: REM   NO OF PINGS
6170  INPUT E0: REM   MAX RAW ECHO PROC AMP
6180  INPUT DE: REM   DELTA E
6190  INPUT BJ: REM    NO AMP BINS
6200  INPUT GS: REM   SONAR GAIN SET
6210  INPUT SL: REM   SOURCE LEVEL
6220  INPUT RL: REM   RCV TRNS LEVEL
6230  INPUT TVG: REM   TVG 40 OR 20
6240  INPUT MR: REM   MAX TVG RANGE
6250  INPUT G1: REM   GAIN AT 1 M
6260  INPUT PG: REM   PROCESSOR GAIN
6270  INPUT PV: REM   PROC VOLT CALIB
6280  INPUT TR: REM   TAPE REC GAIN
6290  INPUT ND: REM   STEPS/DECADE
6300  FOR J = 0 TO BJ
6310  INPUT WE(J)
6315 XE(J) = WE(J)
6320  NEXT J
6330  INPUT IT
6340  FOR J = 0 TO IT - 1
6350  INPUT A$(J)
6360  NEXT J
6370  PRINT D$;"CLOSE";N$
6372 DM = BJ
6373 RM = BJ
6374 CF(1) = 1:CF(2) = 1
6390  REM 
6391  REM  CALC PSI ,INTEGRATED BEAM:C-M CHAP 7
6392 CF = XF(2): REM   DEFAULT
6393 W = 2 * PI * SF
6394 K = W / SS
6395 PS = 5.78 / (K * RT) ^ 2
6400  REM 
6410  REM 
7000  REM   CALCULATE CALIB CONST TO CONVERT RAW ECHO AMP TO ACOUSTIC FISH LENGHT AND ESTM FISH LENGHT
7010  REM  SONAR GAIN INCREASES AS 40*LOG(R) OR 20*LOG(R).IE TVG*LOG(R).
7020  REM   FOR SINGLE SCATTERS,RANGE CORRECTION=-40*LOG(R)
7030 TG = 40 * LD *  LOG (R2 / MR): REM   SET TG FOR R>MR.RCV GAIN CONST FOR R>MR.
7040  IF R2 < MR AND TVG = 40 THEN TG = 0: REM  NO CORRECTION
7050  IF R2 < 1.4 * MR AND TVG = 20 THEN TG = 30 - 20 * LD *  LOG (.5 * (R1 + R2))
7060  REM  TG=RANGE GAIN CORRECTION
7070 RG = G1 - 3 * (10 - GS) + TG: REM  ADJUSTED RCV GAIN AT R1 IN M
7080 S = (SL + RL + RG) / 20
7090 CS = 10 ^  - S
7100 PC = PV / (TR * PG): REM  TAPE AND PROC.
7110 CF = CS * PC: REM  CF*B(J)=ACOUSTIC FISH LENGHT
7120  PRINT "CF=";CF
7130  REM 
7140  REM   CALIB FACTOR FOR ECHO AMPLITUDES
7150 A =  LOG (10) / ND
7160  FOR J = 0 TO BJ
7170 L(J) = E0 *  EXP ( - A * J)
7172  IF RD$ = "Y" THEN L(J) = J * DE
7175 LR(J) = L(J)
7180  NEXT J
7190  GOTO 5300: REM  MENU
8000  REM  RESET
8010 DM = BJ
8020 RM = BJ
8030  FOR J = 0 TO BJ
8040 LR(J) = L(J)
8050  NEXT J
8060  GOTO 5300: REM  MENU
9000  REM  ------ PRINT SONAR PARAMETERS
9010  REM 
9020  IF P$ = "Y" THEN  PRINT D$,"PR#1"
9030  FOR J = 0 TO IT - 1
9040  PRINT A$(J)
9050  NEXT J
9060  PRINT 
9070  PRINT "SONAR PARAMETERS"
9080  PRINT " SIMRAD EY-M"
9090  PRINT "   FREQ =";SF
9100  PRINT "   SOUND SPEED=";SS
9110  PRINT "   TRANS RADIUS=";RT;" M"
9120  PRINT "   SOURCE LEVEL'";SL;" DB, (1MU BAR AT 1 M)"
9130  PRINT "   RCV TRNS=";RL;" DB"
9140  PRINT "   RCV GAIN SET=";GS
9150  PRINT "   TVG=";TVG;" LOG(R) DB"
9160  PRINT "   CALIB SONAR GAIN AT 1 M="; INT (10 * G1 + .5) / 10;" DB"
9170  PRINT "   RANGES,R1,R2 = ";R1;",";R2;"M"
9175  PRINT "   TOTAL NO. PINGS=";MP
9180  PRINT "   PROCESSER GAIN=";PG
9190  PRINT "   E0=";E0
9200  PRINT "   DELTA E=";DE
9210  PRINT "   TAPE REC.GAIN=";TR
9220  PRINT "   SYSTEM CALIB.=";CF
9230 P$ = "0": REM   RESET HARD COPY INST.
9240  PRINT D$,"PR#0"
9250  GOTO 5300: REM  MENU
